﻿using System;
using System.Reflection;

namespace homework04_3
{
    // 定义一个简单的Person类
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }

        // 无参构造函数
        public Person()
        {
            Name = "Default";
            Age = 0;
        }

        // 有参构造函数
        public Person(string name, int age)
        {
            Name = name;
            Age = age;
        }

        public void DisplayInfo()
        {
            Console.WriteLine($"姓名: {Name}, 年龄: {Age}");
        }
    }

    class Program4_3
    {
        static void Main1(string[] args)
        {
            // 获取Person类的Type对象
            Type personType = typeof(Person);

            // 1. 使用无参构造函数创建实例
            Console.WriteLine("使用无参构造函数创建实例:");
            ConstructorInfo noParamConstructor = personType.GetConstructor(Type.EmptyTypes);
            object person1 = noParamConstructor.Invoke(null);
            ((Person)person1).DisplayInfo();

            // 2. 使用有参构造函数创建实例
            Console.WriteLine("\n使用有参构造函数创建实例:");
            ConstructorInfo paramConstructor = personType.GetConstructor(new Type[] { typeof(string), typeof(int) });
            object person2 = paramConstructor.Invoke(new object[] { "张三", 25 });
            ((Person)person2).DisplayInfo();

            // 3. 使用Activator.CreateInstance创建实例
            Console.WriteLine("\n使用Activator创建实例:");
            object person3 = Activator.CreateInstance(personType, new object[] { "李四", 30 });
            ((Person)person3).DisplayInfo();
        }
    }
}